package com.woniuxy.maintest;

import com.sun.corba.se.spi.servicecontext.UEInfoServiceContext;
import com.woniuxy.controller.AccountController;
import com.woniuxy.controller.OneCardController;
import com.woniuxy.controller.UserInfoController;
import com.woniuxy.controller.UserRegisteredController;
import com.woniuxy.entity.Account;
import com.woniuxy.entity.OneCard;
import com.woniuxy.entity.UserInfo;
import com.woniuxy.service.UserRegisteredService;

import java.util.List;
import java.util.Scanner;
import java.util.UUID;

/**
 * 在这个主方法中，写唯一的入口程序，用来写管理员方法的
 * 把这个类，当做前端页面来使用。
 */
public class MyMainMethod {

    public static void main(String[] args) {
        //1.注册功能 用户的注册，饭卡开卡的注册一卡通
        //2.登录功能 自己登录进入后，可以查看自己的饭卡有多少余额；管理员登录进入以后，可以挂失饭卡和补办饭卡
        //3.充值功能 仅仅只需要提供你的饭卡id即可充值！物理手段充值！
        //4.饭卡消费功能：消费记录！
        for (;;) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("============== 请输入系统管理员可用业务 ==============" +
                    "\n 1.学员注册 \n 2.登录注册 \n 3.饭卡注册 \n 4.其他数字退出系统");
            System.out.print("请输入对应功能编号：");
            int i = scanner.nextInt();
            if (i == 1) {
                System.out.print("请输入您的名称：");
                String name = scanner.next();
                System.out.print("请输入您的年龄：");
                int age = scanner.nextInt();
                System.out.print("请输入您的性别：");
                String sex = scanner.next();
                System.out.print("请输入您的大学名称：");
                String college = scanner.next();
                System.out.print("请输入您的专业名称：");
                String specialty = scanner.next();
                System.out.print("请输入您的学号：");
                String stuid = scanner.next();
                UserInfo userInfo = new UserInfo(name, age, sex, college, specialty, stuid);
                //模拟前端 往后端发送的表单数据
                UserRegisteredController userRegisteredController = new UserRegisteredController();
                //用户信息的注册
                userRegisteredController.registerUser(userInfo);
            }else if(i == 2){
                //登录用的注册
                //1.我们还需要查出所有用户的信息，让你自己选择
                System.out.print("请查询所有用户信息以后，输入对应的id。\n搜索某个人(输入all搜索全部学员)：");
                String name = scanner.next();


                //以后如果需要添加一个需求，我需要通过用户的 学号来进行搜索  你们自行完成


                UserInfo userInfo1 = new UserInfo();
                userInfo1.setName(name);
                // 同学们来实现，我可以搜索目标的用户，来只查看其中某个名字的用户的id
                UserInfoController userInfoController = new UserInfoController();
                List<UserInfo> all = userInfoController.findAll(userInfo1);
                //遍历数据拿到学员信息，这个信息是用来展示的，你查出的学员
                /*
                     同学们来实现：我已经生成账号的用户，将不予显示
                 */
                for (UserInfo userInfo : all) {
                    System.out.println(userInfo);
                }
                System.out.println("登录注册：请输入目标对象id");
                //用户id
                int userid = scanner.nextInt();
                //
                for (UserInfo userInfo : all) {
                    //如果我输入的想要生成账号密码的账号id和遍历的列表中的id一致的时候，此时就可以直接自动生成账号密码
                    if (userInfo.getId()==userid) {
                        //真正的账号的输入
                        AccountController accountControllerr = new AccountController();
                        //就是封装账号密码等信息
                        Account account = new Account(userInfo.getStuid()+"","123456",userid);
                        //账号密码的数据注册
                        accountControllerr.regiestAccount(account);
                    }
                }
            }else if (i == 3) {
                //饭卡注册
                OneCardController oneCardController = new OneCardController();
                //录入饭卡信息
                //1.我们还需要查出所有用户的信息，让你自己选择给那个学员id创建饭卡
                System.out.print("请查询所有用户信息以后，输入对应的id。\n搜索某个人(输入all搜索全部学员)：");
                String name = scanner.next();
                //以后如果需要添加一个需求，我需要通过用户的 学号来进行搜索  你们自行完成

                UserInfo userInfo1 = new UserInfo();
                userInfo1.setName(name);
                // 同学们来实现，我可以搜索目标的用户，来只查看其中某个名字的用户的id
                UserInfoController userInfoController = new UserInfoController();
                List<UserInfo> all = userInfoController.findAll(userInfo1);
                //遍历数据拿到学员信息，这个信息是用来展示的，你查出的学员
                /*
                     同学们来实现：我已经生成账号的用户，将不予显示
                 */
                for (UserInfo userInfo : all) {
                    System.out.println(userInfo);
                }
                System.out.println("饭卡注册：请输入目标对象id");
                //用户id 输入的用户id
                int userid = scanner.nextInt();
                System.out.print("饭卡初始化金额：");
                double money = scanner.nextDouble();
                OneCard oneCard = new OneCard();
                //这个UUID是可以生成一串随机不重复编号
                oneCard.setCardNumber(UUID.randomUUID().toString().substring(0,20));
                oneCard.setUserid(userid);
                oneCard.setBalance(money);
                oneCardController.createCard(oneCard);
            }else{
                //退出系统；
                System.out.println("==============     系统成功退出！     ==============");
                break;
            }
        }
    }
}
